요약

  • 목적: 반복문의 진행상황을 확인
  • 활용: 일반적인 반복문 및 apply() 함수에서 활용 가능

1. 모듈 소개 - tqdm

목적

  • 시간이 다소 걸리는 Loop문 실행시, 진행표시 바를 생성하여 진행정도를 확인하기 위함
  • 반복자 객체(iterable)를 tqdm으로 감싸면 끝

2. 활용

1) 기본 활용법

from tqdm import tqdm
# 1. 일반 for 문
for i in tqdm(range(len(df))):
	print(i)

2) enumerate, zip, itterrow 에서 활용

tqdm은 내부적으로 감싼 녀석의 길이(__len__)를 확인하지만, enumerate, zip에는 해당 요소가 없음

  • 외부에서 감쌀 때: total 옵션 사용
  • 내부에서 감쌀 때: list를 감쌈
from tqdm import tqdm
 
# 1. 외부에서 감쌀 때
## len(list1) = len(list2)
for pair in tqdm(zip(list1, list2), tota = len(list1)):
	print(pair)
for idx, row in tqdm(df.iterrows(), total = len(df)):
	print(idx, row)
	
# 2. 내부에서 감쌀 때
for i, row in zip(tqdm(list1)):
	print(i, row)	

3) generator 활용

반복 횟수를 알고 있을 때

length = 1000
generator = (2 * n for n in range(length)):
 
for n in tqdm(generator, total = length):
	pass

3. apply 함수에 적용

목적

  • apply() 함수를 활용할 때 기존 tqdm과 같은 진행상황을 확인하기 위함
  • progress_apply() 활용
import pandas as pd
from tqdm import tqdm
 
tqdm.pandas() # tqdm의 pandas전용 메소드를 호출합니다.
 
df['col3'] = df.progress_apply(lambda x: x['col'] + x['col2'])
# 띄어쓰기 카운트 열
df['count'] = df['context'].progress_apply(lambda x: len(x.split()))

참고사이트